package com.example.joblinker.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.joblinker.dto.JobFairDTO;
import com.example.joblinker.vo.JobFairVO;
import com.example.joblinker.vo.CompanyVO;
import com.example.joblinker.vo.JobVO;

import java.util.List;

public interface JobFairService {

    /**
     * 创建招聘会
     *
     * @param jobFairDTO 招聘会信息
     * @return 招聘会VO
     */
    JobFairVO createJobFair(JobFairDTO jobFairDTO);

    /**
     * 更新招聘会信息
     *
     * @param id 招聘会ID
     * @param jobFairDTO 招聘会信息
     * @return 更新后的招聘会VO
     */
    JobFairVO updateJobFair(Long id, JobFairDTO jobFairDTO);

    /**
     * 获取招聘会详情
     *
     * @param id 招聘会ID
     * @return 招聘会VO
     */
    JobFairVO getJobFairDetail(Long id);

    /**
     * 获取招聘会列表
     *
     * @param page 页码
     * @param size 每页大小
     * @param title 标题关键词
     * @param status 状态
     * @return 分页结果
     */
    Page<JobFairVO> getJobFairList(Integer page, Integer size, String title, Integer status);

    /**
     * 取消招聘会
     *
     * @param id 招聘会ID
     */
    void cancelJobFair(Long id);

    /**
     * 用户报名招聘会
     *
     * @param jobFairId 招聘会ID
     * @param userId 用户ID
     * @return 是否报名成功
     */
    boolean registerForJobFair(Long jobFairId, Long userId);

    /**
     * 企业报名招聘会
     *
     * @param jobFairId 招聘会ID
     * @param companyId 公司ID
     * @return 是否报名成功
     */
    boolean registerCompanyForJobFair(Long jobFairId, Long companyId);

    /**
     * 获取招聘会企业列表
     * @param jobFairId 招聘会ID
     * @return 企业列表
     */
    List<CompanyVO> getJobFairCompanies(Long jobFairId);

    /**
     * 检查公司是否已报名招聘会
     *
     * @param jobFairId 招聘会ID
     * @param companyId 公司ID
     * @return 是否已报名
     */
    boolean isCompanyRegistered(Long jobFairId, Long companyId);

    /**
     * 获取招聘会职位列表
     *
     * @param jobFairId 招聘会ID
     * @return 职位列表
     */
    List<JobVO> getJobFairJobs(Long jobFairId);

    /**
     * 检查用户是否已报名招聘会
     *
     * @param jobFairId 招聘会ID
     * @param userId 用户ID
     * @return 是否已报名
     */
    boolean isUserRegistered(Long jobFairId, Long userId);
} 